In relational database management systems (RDBMS), users querying the database need not specify how to access the data, but only what data is desired. One of the goals of a database management system is to optimize the performance of queries for access and manipulation of data stored in the database. This is accomplished by use of an optimizer program. Given a query, the optimizer program generates several alternative plans for accessing the requested data. The execution cost of each alternative is estimated and the optimum execution plan is selected to access the data in an efficient manner.
Conventionally, database management systems provide a mechanism for a user to view the execution plan for a given query. In some systems, to view the steps of the execution plan for a given query, such as one selected by an optimizer program, an SQL (Structured Query Language) Explain statement is issued. In some systems, the query execution plan may be presented in text format.
The complexity of a query execution plan is related to the size and complexity of the database management system. For example, in many data warehousing systems, the platforms used to run the database management software are multi-node parallel processing systems having tens or even hundreds of nodes (sometimes referred to as massively parallel processing or MPP systems). The amount of data stored frequently exceeds tens or hundreds of gigabytes and in many cases is in the terabyte range. As the complexity of the system increases, the complexity of the execution plans for a given query also increases.
Presenting a query execution plan in text format is often sufficient for relatively simple and straight-forward execution plans. However, as the complexity of the execution plans grows, a more sophisticated mechanism is needed to depict query execution plans.
Another need of software development is regression testing, which is testing that is performed whenever software is modified to provide some confidence that the modified code behaves as intended and that modifications have not inadvertently disrupted the behavior of unmodified code. Modifications to database management software, including optimizer programs, can cause crashes or sub-optimal execution of query plans if regressions are not properly detected.